﻿using System;
using System.Windows.Forms;
using System.Data;
using System.IO;
using System.Diagnostics;
using System.Drawing;
using System.Text.RegularExpressions;

namespace ERP.Classes
{
	/// <summary>
	/// Summary description for cs_hmr_hinhanh.
	/// </summary>
	public class cs_hmr_hinhanh
	{
		private int _manhanvien;
		private string _tenfile;
		private byte[] _hinhanh;
		private DateTime _ngaydang;
		private DateTime _ngaysua;
		private DateTime _ngayxoa;

        cs_hmr_nhanvienInfo nv1 = new cs_hmr_nhanvienInfo();

		public cs_hmr_hinhanh(int manhanvien, string tenfile, byte[] hinhanh, DateTime ngaydang, DateTime ngaysua, DateTime ngayxoa)
		{
			this._manhanvien = manhanvien;
			this._tenfile = tenfile;
			this._hinhanh = hinhanh;
			this._ngaydang = ngaydang;
			this._ngaysua = ngaysua;
			this._ngayxoa = ngayxoa;
		}
		public cs_hmr_hinhanh()
		{
			this._manhanvien = 0;
			this._tenfile = "";
			//this._hinhanh = 0;
			this._ngaydang = DateTime.Now;
			this._ngaysua = DateTime.Now;
			this._ngayxoa = DateTime.Now;
		}
		public int manhanvien
		{
			get{
			return this._manhanvien;}
			set{
			this._manhanvien=value;}
		}
		public string tenfile
		{
			get{
			return this._tenfile;}
			set{
			this._tenfile=value;}
		}
		public byte[] hinhanh
		{
			get{
			return this._hinhanh;}
			set{
			this._hinhanh=value;}
		}
		public DateTime ngaydang
		{
			get{
			return this._ngaydang;}
			set{
			this._ngaydang=value;}
		}
		public DateTime ngaysua
		{
			get{
			return this._ngaysua;}
			set{
			this._ngaysua=value;}
		}
		public DateTime ngayxoa
		{
			get{
			return this._ngayxoa;}
			set{
			this._ngayxoa=value;}
		}

		public void Init()
		{
			this._ngaydang = DateTime.Now;
			this._ngaysua = DateTime.Now;
			this._ngayxoa = DateTime.Now;
		}

		public int ExcuteStoreProcedure(string storeProcedure, int option)
		{
			string[] paraName=new string[7];
			paraName[0]="@manhanvien";
			paraName[1]="@tenfile";
			paraName[2]="@hinhanh";
			paraName[3]="@ngaydang";
			paraName[4]="@ngaysua";
			paraName[5]="@ngayxoa";
			paraName[6]="@option";
			object[] paraValue=new object[7];
			paraValue[0]=this._manhanvien;
			paraValue[1]=this._tenfile;
			paraValue[2]=this._hinhanh;
			paraValue[3]=this._ngaydang;
			paraValue[4]=this._ngaysua;
			paraValue[5]=this._ngayxoa;
			paraValue[6] = option;
			csCSDL csdl=new csCSDL();
			int i=0;
			i=csdl.CreateParameters(paraName,7,paraValue);
			return csdl.ExcuteStoreProcedure(storeProcedure);
		}
		public void KetDulieuVaoListview(ListView myList)
		{
			csListView list=new csListView();
			string[] fields=new string[6];
			fields[0] = "manhanvien";
			fields[1] = "tenfile";
			fields[2] = "hinhanh";
			fields[3] = "ngaydang";
			fields[4] = "ngaysua";
			fields[5] = "ngayxoa";
			list.KetDulieu(myList,"HINHANH","" ,fields);
		}
		public int ExcuteProcedure(int option)
		{
			return this.ExcuteStoreProcedure("Proc_HINHANH", option);
		}

		public void ShowDataInCombo(ComboBox cbo, string condition)
		{
			csComboBox cb = new csComboBox("tenfile","manhanvien");
			cb.KetDuLieu(cbo,"HINHANH", condition);
		}

		public int ShowDataGrid(DataGrid datagrid, string condition)
		{
			csDataGrid grid=new csDataGrid();

			string[] header=new string[6];
			header[0]="manhanvien";
			header[1]="tenfile";
			header[2]="hinhanh";
			header[3]="ngaydang";
			header[4]="ngaysua";
			header[5]="ngayxoa";

			string[] mappingname=new string[6];
			mappingname[0]="manhanvien";
			mappingname[1]="tenfile";
			mappingname[2]="hinhanh";
			mappingname[3]="ngaydang";
			mappingname[4]="ngaysua";
			mappingname[5]="ngayxoa";

			int[] colwidth=new int[6];
			colwidth[0]=12;
			colwidth[1]=3000;
			colwidth[2]=48;
			colwidth[3]=24;
			colwidth[4]=24;
			colwidth[5]=24;
			csCSDL csdl=new csCSDL();
			return grid.CreateTableStyle("HINHANH",datagrid,csdl.OpenTable("HINHANH",condition),header,mappingname,colwidth,6);
		}
		public int Get_Info()
		{
			csCSDL csdl = new csCSDL();
			DataSet ds= new DataSet("ds");
			try
			{
				ds=csdl.OpenTable("HINHANH","manhanvien = " + this._manhanvien);
				if (ds==null ||ds.Tables[0].Rows.Count==0)
				{
					return 0;
				}
				//this._manhanvien = Convert.ToInt32(ds.Tables[0].Rows[0]["manhanvien"].ToString().Trim());
				this._tenfile = ds.Tables[0].Rows[0]["tenfile"].ToString().Trim();
				this._hinhanh = ((byte[])(ds.Tables[0].Rows[0]["hinhanh"]));
				this._ngaydang = Convert.ToDateTime(ds.Tables[0].Rows[0]["ngaydang"].ToString().Trim());
				this._ngaysua = Convert.ToDateTime(ds.Tables[0].Rows[0]["ngaysua"].ToString().Trim());
				this._ngayxoa = Convert.ToDateTime(ds.Tables[0].Rows[0]["ngayxoa"].ToString().Trim());
				return 1;
			}
			catch
			{
				return -1;
			}
		}
		public int Luu_HinhAnh(string path, PictureBox pb)
		{
			//string[] arrFilename = Regex.Split(path, @"\");
			//Array.Reverse(arrFilename);
            try
            {
                MemoryStream ms = new MemoryStream();
                pb.Image.Save(ms, pb.Image.RawFormat);
                byte[] arrImage = ms.GetBuffer();
                ms.Close();

                //this._manhanvien = this.manhanvien;
                //this._tenfile = arrFilename[0];
                this._tenfile = path;
                this._hinhanh = arrImage;

                try
                {
                    int i = 0;
                    if (this.Get_Info() > 0) // thực hiện cập nhật
                    {
                        this._tenfile = path;
                        this._hinhanh = arrImage;
                        this._ngaysua = DateTime.Now;
                        i = this.ExcuteProcedure(2);
                    }
                    else // thực hiện lưu mới
                    {
                        i = this.ExcuteProcedure(1);
                    }

                    if (i > 0)
                    {
                        MessageBox.Show(path + " đã được lưu!", "Trạng thái lưu hình", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    return 1;
                }
                catch (Exception sqlExc)
                {
                    MessageBox.Show(Convert.ToString(sqlExc), "Lỗi xảy ra!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return 0;
                }
            }
            catch
            {
                return 0;
            }
		}

		public int Xoa_HinhAnh()
		{
			try
			{
				//this._manhanvien = this.manhanvien;
				int j = 0;
				if (this.Get_Info() > 0 )
				{
					j = this.ExcuteProcedure(3);
				}
				else
				{
					MessageBox.Show("Không có hình để xóa!");
				}
				if (j>0)
				{
					MessageBox.Show("Hình đã được xóa!", "Trạng thái lưu hình", MessageBoxButtons.OK, MessageBoxIcon.Information);
				}
				return 1;
			}
			catch (Exception ex)
			{
				MessageBox.Show("Không xóa được hình! " + ex.Message);
				return 0;
			}
		}
	}
}
